package com.hengshan.service.impl;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Service
@Slf4j
public class UploadService {

    /**
     * 根据当前时间生成文件路径
     *
     * @param fileName 原始文件名
     * @return String 保存的文件路径
     */
    public String generateFilePath(String fileName) {
        //根据日期生成路径
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String date = sdf.format(new Date());
        //uuid作为文件名
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        //截取文件类型 test.jpg -> .jpg
        String fileType = fileName.substring(fileName.lastIndexOf("."));
        String newFileName = uuid + fileType;
        //return date + "/" + newFileName;
        return date + "_" + newFileName;
    }

    /**
     * 保存到本地目录
     *
     * @param file 文件
     * @return String 保存的文件路径
     */
    public String saveLocal(MultipartFile file) {
        String imageRootPath = System.getProperty("user.dir") + "/images/";
        //获取原始文件名
        String originalFilename = file.getOriginalFilename();
        String filePath = generateFilePath(originalFilename);
        log.info("[fileName:" + originalFilename + " size:" + file.getSize() / 1024 + "KB newFile:" + filePath + "]");
        File newFile = new File(imageRootPath + filePath);
        try {
            //判断文件父目录是否存在
            if (!newFile.getParentFile().exists()) {
                newFile.getParentFile().mkdirs();
            }
            file.transferTo(newFile);
            return filePath;
        } catch (Exception e) {
            log.error("Save file exception. {}", e.getMessage());
        }
        return null;
    }
}
